-- *****************************************************************
-- REDSTONE-PROFILE-MIB
--
-- Redstone Communications Inc. Enterprise MIB
-- Profile MIB
--
-- Copyright 1999-2000 Unisphere Solutions Inc.
-- All Rights Reserved.
-- *****************************************************************

REDSTONE-PROFILE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, 
    OBJECT-TYPE,
    Unsigned32
        FROM SNMPv2-SMI

    DisplayString,
    RowStatus
        FROM SNMPv2-TC

    MODULE-COMPLIANCE, 
    OBJECT-GROUP  
        FROM SNMPv2-CONF

    InterfaceIndex
        FROM IF-MIB

    rsMgmt
                FROM REDSTONE-SMI;


rsProfileMIB MODULE-IDENTITY
    LAST-UPDATED "200004200000Z"
    ORGANIZATION "Redstone Communications Inc."
        CONTACT-INFO
        "
        Redstone Communications, Inc.
                5 Carlisle Road
        Westford MA 01886
        USA
        Tel:    +1-978-692-1999
                Email:  mib@redstonecom.com
        "
        DESCRIPTION
                "The Profile MIB for the
                Redstone Communications Inc. enterprise."
        REVISION      "200004200000Z"
        DESCRIPTION
                "Added rsProfAssignIfTable, rsProfToIfMapTable to
        configure and report assignments of profiles to 
        interface/encapsulation pairs."
        REVISION      "9906010000Z"
        DESCRIPTION
                "Initial version of this MIB module."
    ::= { rsMgmt 25 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Textual conventions
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

RsProfileIfEncaps ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Encapsulated protocol type."
    SYNTAX      INTEGER {
                    ip(0)
                }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed object groups
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsProfileObjects                OBJECT IDENTIFIER ::= {rsProfileMIB 1}

-- Functional groups

rsProfileName                   OBJECT IDENTIFIER ::= {rsProfileObjects 1}
rsProfileAssign                 OBJECT IDENTIFIER ::= {rsProfileObjects 2}

-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed objects for Profile Names
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsProfileNameTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsProfileNameEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The entries in this table provide mappings of configuration profile 
        names to local integer identifiers for those profiles. These integers
        are used as indexes into other MIB tables containing profile configuration
        parameters associated with the same profile name."
    ::= { rsProfileName 1 }

rsProfileNameEntry OBJECT-TYPE
    SYNTAX      RsProfileNameEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A mapping of a profile name to an integer identifier for that name."
    INDEX { IMPLIED rsProfileNameName }
    ::= { rsProfileNameTable 1 }

RsProfileNameEntry ::= SEQUENCE {
    rsProfileNameName               DisplayString,
    rsProfileNameRowStatus          RowStatus,
    rsProfileNameId                 Unsigned32
}

rsProfileNameName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(1..80))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The profile name uniquely identifying this entry."
    ::= { rsProfileNameEntry 1 }

rsProfileNameRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Controls creation/deletion of entries in this table.
        Only the values 'createAndGo' and 'destroy' may be SET."
    ::= { rsProfileNameEntry 2 }

rsProfileNameId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The integer identifier associated with this profile name.

        This value of this identifier is assigned by the device when 
        an entry in this table is created."
    ::= { rsProfileNameEntry 3 }


rsProfileIdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsProfileIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Provides inverse mapping of profile IDs to profile names."
    ::= { rsProfileName 2 }

rsProfileIdEntry OBJECT-TYPE
    SYNTAX      RsProfileIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A mapping of an integer identifier to a profile name."
    INDEX { rsProfileIdId }
    ::= { rsProfileIdTable 1 }

RsProfileIdEntry ::= SEQUENCE {
    rsProfileIdId                  Unsigned32,
    rsProfileIdName                DisplayString
}

rsProfileIdId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The integer identifier associated with this profile name."
    ::= { rsProfileIdEntry 1 }

rsProfileIdName OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(1..80))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The profile name having the associated identifier."
    ::= { rsProfileIdEntry 2 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Managed objects for Profile Assignments
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsProfAssignIf      OBJECT IDENTIFIER ::= { rsProfileAssign 1 }

--
-- Assign profile to interface/encapsulation pair.
--
rsProfAssignIfTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsProfAssignIfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table providing profile assignment to interface/encapsulation pair."
    ::= { rsProfAssignIf 1 }

rsProfAssignIfEntry OBJECT-TYPE
    SYNTAX      RsProfAssignIfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An assignment of a profile to an interface/encapsulation pair."
    INDEX { rsProfAssignIfIndex, rsProfAssignIfEncaps }
    ::= { rsProfAssignIfTable 1 }

RsProfAssignIfEntry ::= SEQUENCE {
    rsProfAssignIfIndex               InterfaceIndex,
    rsProfAssignIfEncaps              RsProfileIfEncaps,
    rsProfAssignIfRowStatus           RowStatus,
    rsProfAssignIfProfileId           Unsigned32
}

rsProfAssignIfIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The ifIndex of the interface to which the profile is assigned."
    ::= { rsProfAssignIfEntry 1 }

rsProfAssignIfEncaps OBJECT-TYPE
    SYNTAX      RsProfileIfEncaps
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The encapsulated protocol type to which the assigned profile pertains.
        An interface may have a different profile assigned for each encapsulation
        it supports."
    ::= { rsProfAssignIfEntry 2 }

rsProfAssignIfRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "For SET, supports only createAndGo(4) and destroy(6).
        Returns active(1) when read."
    ::= { rsProfAssignIfEntry 3 }

rsProfAssignIfProfileId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The ID of the profile assigned to this interface/encapsulation pair."
    ::= { rsProfAssignIfEntry 4 }

--
-- Profile-to-interface/encapsulation mappings.
--
rsProfToIfMapTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RsProfToIfMapEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table to report the set of interface/encapsulation pairs assigned
        to each profile."
    ::= { rsProfAssignIf 2 }

rsProfToIfMapEntry OBJECT-TYPE
    SYNTAX      RsProfToIfMapEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Reports an interface/encapsulation pair assigned to a profile."
    INDEX { rsProfToIfMapProfileId,
            rsProfToIfMapIndex, 
            rsProfToIfMapEncaps }
    ::= { rsProfToIfMapTable 1 }

RsProfToIfMapEntry ::= SEQUENCE {
    rsProfToIfMapProfileId           Unsigned32,
    rsProfToIfMapIndex               InterfaceIndex,
    rsProfToIfMapEncaps              RsProfileIfEncaps
}

rsProfToIfMapProfileId OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The ID of the profile assigned to this interface/encapsulation pair."
    ::= { rsProfToIfMapEntry 1 }

rsProfToIfMapIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The ifIndex of the interface to which the profile is assigned."
    ::= { rsProfToIfMapEntry 2 }

-- read-only auxiliary object (since all objects are used in index, at least
-- one must be accessible)
rsProfToIfMapEncaps OBJECT-TYPE
    SYNTAX      RsProfileIfEncaps
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The encapsulation type to which the assigned profile pertains.
        An interface may have a different profile assigned for each
        encapsulation type it supports."
    ::= { rsProfToIfMapEntry 3 }


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Notification control objects
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No notifications are defined in this MIB. Placeholder follows.

-- rsProfileTrapControl      OBJECT IDENTIFIER ::= { rsProfileMIB 2 }



-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Notifications
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-- No notifications are defined in this MIB. Placeholder follows.

-- The following two OBJECT IDENTIFIERS are used to define SNMPv2 
-- Notifications that are easily translated into SNMPv1 Traps.

-- rsProfileTraps            OBJECT IDENTIFIER ::= { rsProfileMIB 3 }
-- rsProfileTrapPrefix       OBJECT IDENTIFIER ::= { rsProfileTraps 0 }



-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Conformance information
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rsProfileMIBConformance
             OBJECT IDENTIFIER ::= { rsProfileMIB 4 }
rsProfileMIBCompliances
             OBJECT IDENTIFIER ::= { rsProfileMIBConformance 1 }
rsProfileMIBGroups
             OBJECT IDENTIFIER ::= { rsProfileMIBConformance 2 }


-- compliance statements

rsProfileCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for systems supporting naming of 
        configuration profiles."
    MODULE  -- this module
    MANDATORY-GROUPS { rsProfileGroup }
    ::= { rsProfileMIBCompliances 1 }


rsProfileCompliance2 MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for systems supporting naming of 
        configuration profiles and profile assignment to interfaces."
    MODULE  -- this module
    MANDATORY-GROUPS { rsProfileGroup, rsProfileIfGroup }
    ::= { rsProfileMIBCompliances 2 }


-- units of conformance

rsProfileGroup OBJECT-GROUP
    OBJECTS {
        rsProfileNameName,
        rsProfileNameRowStatus,
        rsProfileNameId,

        rsProfileIdName
    }
    STATUS      current
    DESCRIPTION
        "The basic collection of objects providing management
        of Profile naming functionality in a Redstone product."
    ::= { rsProfileMIBGroups 1 }

rsProfileIfGroup OBJECT-GROUP
    OBJECTS {
        rsProfAssignIfRowStatus,
        rsProfAssignIfProfileId,
        
        rsProfToIfMapEncaps
    }
    STATUS      current
    DESCRIPTION
        "The basic collection of objects providing management
        of Profile assignment to interfaces in a Redstone product."
    ::= { rsProfileMIBGroups 2 }

END